1. Field of the Invention
This invention relates to data error checking and recovery and more particularly relates to data error checking and recovery in a data storage device in a Small Computer System Interface (“SCSI”) End-to-End Checking system.
2. Description of the Related Art
The explosion of information created by e-business is making storage a strategic investment priority for companies of all sizes. The nature of e-business requires storage that supports data availability so that employees, customers and trading partners can access the data at any time during any day through reliable, disaster-tolerant systems. In the event of a disaster, high data availability and recovery are essential to maintaining business continuity.
In order to prevent data loss during a disaster, such as a system failure or natural disaster, many companies rely on storage backups. A backup of data may be stored on removable media, such as tapes or writable optical disks. While removable media may be suitable for small companies, large corporations require immense amounts of storage capacity and therefore removable media is not a viable option for data backup. One solution for large corporations is storage servers. Storage servers are typically located on a common business network and configured to share data with nodes on the network. One such implementation is a storage area network (SAN). A SAN is a high-speed subnetwork of shared storage devices. A storage device is a machine that contains a disk or disks for storing data. Additionally, storage servers may be located remotely in order to provide data redundancy in the event of a complete site failure.
For current storage area networks, data is typically transmitted in a SCSI environment that does not provide redundancy checking from a source to a target. Currently, individual devices have internal error checking. For example, a PCI bus may have a parity bit added to each 32 bit word. The parity is tracked from where data is sent to the target along the bus, but once the data reaches the target device, the parity information is not retained. In recognition of this problem, a new SCSI standard is emerging called the SCSI T10 End-to-End Data Protection Standard which addresses the problem of errors introduced somewhere in the data stream between a source and a target that may not be detected by individual devices between the source, target, and storage device.
One element of the standard is to include information along with each sector of the data in the form of a 2-byte guard, a 2-byte application tag, and a 4-byte reference tag. This allows a redundancy check to be created and stored in the guard. The application tag is used by an application and the reference tag is part of the logical block address. Since the redundancy check can now be done at the source and transmitted to the target and stored on disk, it can be used to ensure data consistency from end to end.
However, according to the End-to-End Data Protection standard, the host or source can add any information it desires in those integrity fields and require that the target device or data storage server return them verbatim. In this mode, intermediate devices are not allowed to check the integrity of the payload, only pass the data. If an error is seen, recovery is difficult or impossible. Additionally, determining the source of the error becomes very difficult. The End-to-End Data Protection standard allows this behavior because in certain environments the application that sends the data may use the guard for a purpose other than integrity checking, and the application must have the information returned exactly as it was sent.
Since the foremost responsibility of a storage system is to store and return the data with integrity, allowing the source to disable end-to-end checking imposes a great risk of data loss. From the foregoing discussion, it should be apparent that a need exists for an apparatus, system, and method for mandatory end-to-end data protection that overcome the redundancy check problem associated with source being allowed to disable end-to-end checking. Beneficially, such an apparatus, system, and method would allow data error checking and recovery in a SCSI environment while still complying with the End-to-End Data Protection standard.